#!/usr/bin/lua
local xpath = require("xpath")
local lom = require "lxp.lom";

ApmXml={}

-- 解析xml
-- arg:
--  s_data: 需要解析的xml字符串
--  s_encoding: 编码格式
-- return:
--  xml的解析对象(table)
--  nil (出错)
function ApmXml.load(s_data, s_encoding)
    if type(s_data) ~= "string" then
        return nil;
    end

    if s_encoding ~= nil then
        lom.setencoding(s_encoding);
    end

    return lom.parse(s_data);
end

-- 获取指定的内容
-- arg:
--  t_xml_tree: xml的解析对象(table)
--  s_xpath: 节点的路径(string)
-- return:
--  第一个节点的内容(string)
--  nil (出错/不存在)
function ApmXml.getValue(t_xml_tree, s_xpath)
    if type(t_xml_tree) ~= "table" or type(s_xpath) ~= "string" then
        return nil;
    end
    local t_nodes = xpath.selectNodes(t_xml_tree, s_xpath);
    if (t_nodes == nil)then
        return nil;
    end
    for _,val in ipairs(t_nodes) do
        return val.tag or val;
    end
    return nil;
end

return ApmXml;
